package io.bdmc.core.dts;

import io.bdmc.common.utils.ByteUtil;

public class DtsDownCmd {
    static final String Flag = "CC55";

    public static String buildHeadMsg(String body) {
        body = "FF"+body;
        String msg = Flag+ByteUtil.intToHex_4(body.length()/2+1)+body;
        msg+= ByteUtil.makeChecksum(msg);
        return msg.toUpperCase();
    }
    /**
     * 写入配置参数文件数据
     * @return
     */
    public static String buildSetConfigInfoMsg(String fileHex) {
        return buildHeadMsg("01"+fileHex);
    }


    /**
     * 读取配置参数文件数据
     */
    public static String buildReadConfigInfoMsg() {
        return buildHeadMsg("0200");
    }
    /**
     * 读取AS、S原始数据
     */
    public static String buildReadASSOriginalDataMsg(int ch) {
        return buildHeadMsg("05"+ByteUtil.intToHex_1(ch));
    }
    /**
     * 读取AS/S数据
     * @param ch
     * @return
     */
    public static String buildReadASSDataMsg(int ch) {
        return buildHeadMsg("06"+ByteUtil.intToHex_1(ch));
    }
    /**
     * 读取原始的所有温度数据
     * @param ch
     * @return
     */
    public static String buildReadAllTemperatureMsg(int ch) {
        return buildHeadMsg("07"+ByteUtil.intToHex_1(ch));
    }
    /**
     * 读取温度传感器温度
     * @return
     */
    public static String buildReadTemperatureSensor() {
        return buildHeadMsg("0800");
    }
    /**
     * 设置温度曲线的修正开关
     * @param ch 通道号0-7
     * @param fixedSwitch  1表示打开CH通道的修正开关，设置为0表示不修正温度曲线。
     * @return
     */
    public static String buildSetTemperatureCurveFixedSwitch( int ch,int fixedSwitch ) {
        return buildHeadMsg("0A"+ByteUtil.intToHex_1(ch)+ByteUtil.intToHex_1(fixedSwitch));
    }
    /**
     * 读取温度曲线的修正开关量
     * @param ch 通道号0-7
     * @return
     */
    public static String buildReadTemperatureCurveFixedSwitch( int ch ) {
        return buildHeadMsg("0B"+ByteUtil.intToHex_1(ch));
    }
    /**
     * 执行一次温度曲线自动修正计算
     * @param ch  通道号0-7
     * @param fixedSwitch 1表示执行温度曲线自动修正计算，设置为0表示不操作。
     * @return
     */
    public static String buildSetTemperatureCurveAutocorrection( int ch,  int fixedSwitch ) {
        return buildHeadMsg("0C"+ByteUtil.intToHex_1(ch)+ByteUtil.intToHex_1(fixedSwitch));
    }
    /**
     * 读取原始的所有温度数据（包含断纤报警信息）
     * @param ch
     * @return
     */
    public static String buildReadTemperatureData( int ch ) {
        return buildHeadMsg("14"+ByteUtil.intToHex_1(ch));
    }
    /**
     * 设置定温报警动作温度
     * @param temp 为定温报警动作温度，单字节，可选值为60、70、85
     * @return
     */
    public static String buildSetConstantTemperatureAlarmOperTmperature( int temp ) {
        return buildHeadMsg("15"+ByteUtil.intToHex_1(temp));
    }
    /**
     *  读取定温报警动作温度
     * @return
     */
    public static String buildReadConstantTemperatureAlarmOperTmperature() {
        return buildHeadMsg("1600");
    }
    /**
     *  发送透传数据的命令
     * @param subCmd 嵌入式主机通过串口发送给控制板的命令
     * @return
     */
    public static String buildSendTransparentCmdData(String subCmd) {
        return buildHeadMsg("03"+subCmd);
    }



}